Quasi disk drive for testing disk interface performance

ABSTRACT

Embodiments of the invention relate to diagnostic evaluation of hardware components of a computer machine. A conventional storage device is replaced with a modified storage device. Read and write operations are received by the modified storage device. Issuance of a response to the read and write operations is limited to an acknowledgement receipt, which is employed to evaluate performance and/or bandwidth of the machines with respect to hardware for data storage.

BACKGROUND

1. Technical Field

The present invention relates to a method and system for testingperformance of hardware elements in a computer system. Morespecifically, the invention relates to a system and method that testsperformance of hardware elements within the computer system.

2. Description of the Prior Art

Access to disk storage systems, or storage media, is necessary tosupport both read and write operations in a computer system. Differentfactors are employed for assessment of performance of the computer,including throughput, e.g. megabytes per second, and I/O operations persecond. However, it is recognized in the art that performance is adifficult measurement to attain. More specifically, performance may bebased upon the software or hardware, or on a combination of the hardwareand software. Accordingly, there may be an issue with compatibilityassociated with the combination of the hardware and software thataffects performance measurement.

With respect to the computer hardware assessing associated performance,there is an issue of a direct assessment. More specifically, hardware isgenerally not a single element within the system, but is incommunication with adapters, controllers, etc. To assess performance ofa select hardware element, this element needs to have some form ofisolation or direct communication with an assessment tool. Otherwise,the performance being assessed cannot be directly correlated with asingle computer hardware element.

SUMMARY OF THE INVENTION

This invention comprises a method, system, and apparatus for hardwaretesting and evaluation.

In one aspect of the invention, a method is provided for hardwareperformance evaluation in a computer system. More specifically, ahardware element is provided in communication with an operating system.The hardware element includes logic to emulate the behavior of apersistent storage device. In addition, the hardware element includes aconnector to provide a direction connection of the hardware element to astorage slot. A request is sent from an application to the hardwareelement, with processing of the request requiring access to the hardwareelement. In response to receipt of the request, the hardware elementissues a response without processing data to support the request.Performance of supporting hardware in communication with the hardwareelement is tested. More specifically, the performance measures ameasurable factor associated with both sending of the request andreceipt of a response.

In another aspect, a system is provided with a processing unit incommunication with both memory and an operating system, and a hardwareelement in communication with the operating system. The hardware elementincludes logic to emulate behavior of a persistent storage device, and aconnector to attach directly into a storage slot. A functional unit isprovided in communication with the memory and includes a diagnosticprogram in communication with managers. More specifically, thediagnostic program supports issuance of an evaluation to the hardwareelement. A request manager in communication with the diagnostic programsends a request from the diagnostic program to the hardware element. Therequest manager accesses the hardware element and receives a response tothe request from the hardware element, without the hardware elementprocessing data to support the request. A test manager in communicationwith the request manager tests performance of supporting hardware incommunication with the hardware element. More specifically, the testmanager measures a factor associated with both the send of the requestand receipt of a response.

In yet another aspect, a computer program product is provided for usewith an electronic communication. The computer program product includesa computer-readable storage medium having computer readable program codeembodied thereon, which when executed causes a computer to implement amethod for testing performance of computer hardware. More specifically,the computer program product configures a hardware element with logic toemulate behavior of a persistent storage device, and a connector tosecure directly to a storage slot. The computer program product sends arequest to the hardware element, including instructions to access thehardware element. In addition, the computer program product supports thehardware element responding to the request without actually supportingthe request. The computer program product tests performance ofsupporting hardware in communication with the hardware element in aneffort to measure a measureable factor associated with sending therequest and receiving a response to the request.

In an even further aspect, a computer implemented method is provided forevaluation of hardware components. More specifically, a hardware elementis provided in communication with an operating system, with the hardwareelement configured with a connector to secure directly to a hard driveslot and logic to emulate behavior of a persistent storage device. Anapplication issues a request to the hardware element, with the requestaccessing the embedded logic. A diagnostic tool receives responsecommunication(s) from the embedded logic. More specifically, theresponse communication(s) includes an acknowledgement of receipt of therequest without data to support the request. Performance of supportinghardware is tested by measuring a factor associated with sending of therequest and receipt of a response.

Other features and advantages of this invention will become apparentfrom the following detailed description of the presently preferredembodiment of the invention, taken in conjunction with the accompanyingdrawings.

BRIEF DESCRIPTION OF THE DRAWINGS

The drawings referenced herein form a part of the specification.Features shown in the drawings are meant as illustrative of only someembodiments of the invention, and not of all embodiments of theinvention unless otherwise explicitly indicated. Implications to thecontrary are otherwise not to be made.

FIG. 1 is a block diagram illustrating a modified storage device incommunication with a client machine.

FIG. 2 is a flow chart illustrating diagnostic testing of performancewith respect to a read operation.

FIG. 3 is a flow chart illustrating diagnostic testing of performancewith respect to a write operation.

FIG. 4 is a block diagram illustrating one form of a data structure.

FIG. 5 is a flow chart illustrating a process of analyzing the read andwrite operation measurement data.

FIG. 6 is a flow chart illustrating a process for measuring bandwidth,and more specifically capacity of the hardware to support paralleloperations.

FIG. 7 is a block diagram illustrating tools embedded in a computersystem to support a testing interface for diagnostic support andevaluation.

FIG. 8 is a block diagram showing a system for implementing anembodiment of the present invention.

DETAILED DESCRIPTION

It will be readily understood that the components of the presentinvention, as generally described and illustrated in the Figures herein,may be arranged and designed in a wide variety of differentconfigurations. Thus, the following detailed description of theembodiments of the apparatus, system, and method of the presentinvention, as presented in the Figures, is not intended to limit thescope of the invention, as claimed, but is merely representative ofselected embodiments of the invention.

The functional units described in this specification have been labeledas tools, modules, and/or managers. The functional units may beimplemented in programmable hardware devices such as field programmablegate arrays, programmable array logic, programmable logic devices, orthe like. The functional units may also be implemented in software forexecution by various types of processors. An identified functional unitof executable code may, for instance, comprise one or more physical orlogical blocks of computer instructions which may, for instance, beorganized as an object, procedure, function, or other construct.Nevertheless, the executables of an identified functional unit need notbe physically located together, but may comprise disparate instructionsstored in different locations which, when joined logically together,comprise the functional unit and achieve the stated purpose of thefunctional unit.

Indeed, a functional unit of executable code could be a singleinstruction, or many instructions, and may even be distributed overseveral different code segments, among different applications, andacross several memory devices. Similarly, operational data may beidentified and illustrated herein within the functional unit, and may beembodied in any suitable form and organized within any suitable type ofdata structure. The operational data may be collected as a single dataset, or may be distributed over different locations including overdifferent storage devices, and may exist, at least partially, aselectronic signals on a system or network.

Reference throughout this specification to “a select embodiment,” “oneembodiment,” or “an embodiment” means that a particular feature,structure, or characteristic described in connection with the embodimentis included in at least one embodiment of the present invention. Thus,appearances of the phrases “a select embodiment,” “in one embodiment,”or “in an embodiment” in various places throughout this specificationare not necessarily referring to the same embodiment.

Furthermore, the described features, structures, or characteristics maybe combined in any suitable manner in one or more embodiments. In thefollowing description, numerous specific details are provided, such asexamples of modules, managers, etc., to provide a thorough understandingof embodiments of the invention. One skilled in the relevant art willrecognize, however, that the invention can be practiced without one ormore of the specific details, or with other methods, components,materials, etc. In other instances, well-known structures, materials, oroperations are not shown or described in detail to avoid obscuringaspects of the invention.

The illustrated embodiments of the invention will be best understood byreference to the drawings, wherein like parts are designated by likenumerals throughout. The following description is intended only by wayof example, and simply illustrates certain selected embodiments ofdevices, systems, and processes that are consistent with the inventionas claimed herein.

In the following description of the embodiments, reference is made tothe accompanying drawings that form a part hereof, and which shows byway of illustration the specific embodiment in which the invention maybe practiced. It is to be understood that other embodiments may beutilized because structural changes may be made without departing formthe scope of the present invention.

It is recognized in the art that a disk drive is employed to store data.A read operation reads data from the data storage, i.e. disk drive, anda write operation changes data or takes data stored elsewhere and storesthe changed data on the disk drive. To test performance of the computersystem that communicates with the disk drive, a device and associatedassessment tool is provided to emulate a disk drive, referred to hereinas a modified storage device. One critical factor is that the modifiedstorage device does not store data. In fact, the modified storage deviceis configured to respond to received disk drive protocols commands, e.g.read and write operations. The assessment tool is concerned withresponse speed with the modified storage device and not with dataconsistency or storage.

FIG. 1 is a block diagram (100) illustrating a modified storage devicein communication with a client machine. As shown, a modified storagedevice (110) is provided in communication with a client machine (120).The client machine (120) is a conventional client machine with aprocessing unit (122) in communication with memory (126) across a bus(124). Read and write operations are issued by the processing unit (122)and communicated to the modified storage device (110). With respect tothe modified storage device (110) and its hardware connection (140) tothe client machine (120), the modified storage device (110) plugs intothe client machine (120) via a direct port connection and in the samemanner as a conventional storage device. More specifically, theconnection of the modified storage device (110) to the client machine(120) is absent a cable or any other intermediate hardware element.Accordingly, the connection of the modified storage device (110) to theclient machine (120) is a direct connection that parallels connection ofa conventional storage device to the client machine.

To address processing of read and write operations, the modified storagedevice (110) has exterior characteristics of a conventional disk drive.However, modifications are made to the internal functionality of thedevice. More specifically, logic is provided to make the modifiedstorage device (110) look and feel like a conventional disk drive. Asshown, logic (130) is provided in communication with the processing unit(122). The logic (130) emulates storage device behavior so that from ahardware perspective the modified storage device (110) is a conventionalstorage device, and from a software perspective a diagnostic applicationcan differentiate the modified storage device (110) from an actualstorage device, as will be explained in detail with reference to thediagnostic application(s). In one embodiment, the logic (130) emulates ahard disk drive, including sectors and tracks. However, the logic (130)associated with the modified storage device (110) is not a hard diskdrive, it does not spin and in one embodiment, the logic (130) is notaffected by delays associated with spinning a disk. Similarly, in oneembodiment, the logic (130) is located on a semi-conductor local to themodified storage device (110). Accordingly, the modified storage device(110) is configured with logic to provide the characteristics andappearance of a conventional hard disk, in a manner to supportdiagnostic testing of communication with the storage device.

As described herein, testing is conducted on the modified storage device(110) to ascertain performance or performance deficiencies with respectto a conventional storage device in communication with the clientmachine. FIG. 2 is a flow chart (200) illustrating diagnostic testing ofperformance with respect to a read operation. As shown, a read operationis initiated by a diagnostic application (202). The read operation isnot an actual read operation, as the diagnostic application is notconcerned with actual data. Rather, the read operation merelycommunicates with the modified storage device in the form of a readoperation. Following step (202), the diagnostic application records thestart of the read operation (204). There are different tools employedfor tracking a time interval, including but not limited to, starting atime, reading a clock, etc. Recording the start of the read operationincludes the start of tracking the time interval. Following step (204),the read request associated with the read operation is sent to themodified storage device (206). As the modified storage device is not ahard disk, a NULL data set is returned to the diagnostic application asa reply to the read operation (208), and the diagnostic applicationrecords the end of the read operation (210). In one embodiment, a timeinterval, better described as the difference between the start intervaland end of the read operation, is calculated and referred to as themeasured element. Similarly, in one embodiment, the read operationoriginates from an application local to the client machine or from aserver in communication with the client machine over a networkconnection. Accordingly, the time for processing a read operation isascertained in conjunction with the modified storage device.

A write operation may be emulated in a similar manner to the readoperation shown in FIG. 2. More specifically, FIG. 3 is a flow chart(300) illustrating diagnostic testing of performance with respect to awrite operation. As shown, a write operation is initiated by adiagnostic application (302). The write operation is not an actual writeoperation, as the diagnostic application is not concerned with actualdata. Rather, the write operation merely communicates with the modifiedstorage device in the form of a write transaction. Following step (302),the diagnostic application records the start of the write operation(304). There are different tools employed for tracking a time interval,including but not limited to, starting a time, reading a clock, etc.Recording the start of the write operation includes the start oftracking the time interval. Following step (304), the write requestassociated with the write operation is sent to the modified storagedevice (306). Although the modified storage device in receipt of therequest is not a hard disk, the transaction accesses the modifiedstorage device to emulate a write transaction (308). When the actions ofthe write transaction are completed and the transaction is returned tothe diagnostic application as a reply to the write operation (310), thediagnostic application records the end of the write operation (312). Inone embodiment, a time interval as the difference between the startinterval and end of the write operation is calculated and referred to asthe measured element. Similarly, in one embodiment, the write operationoriginates from an application local to the client machine or from aserver in communication with the client machine over a networkconnection. Accordingly, the time for processing a write operation isascertained in conjunction with the modified storage device.

The read and write operations demonstrated in FIGS. 2 and 3,respectively, pertain to a direct communication of an operation to amodified storage device emulating a hard disk device. The time intervalmeasured in both scenarios is employed to address the speed of requestprocessing. More specifically, the measurement is employed to determinethe source of any delays. In one embodiment, a table is maintained tostore the measured time interval together with the hardwareconfigurations and identification of the operation. FIG. 4 is a blockdiagram (400) illustrating one form of a data structure. Morespecifically, three categories of data are organized in the datastructure, including the measured time interval (402), the type ofoperation (404) (e.g. read or write operation), and the hardwareconfiguration (406). It is understood that the relevance of the measuredtime interval is with respect to the hardware configuration. In oneembodiment, different hardware configurations may provide differentmeasurements of time, and as such yield different performancemeasurement. Accordingly, the measured data is organized and stored in adata structure.

Following measurement of data shown in FIGS. 2 and 3 and/or accumulatedin FIG. 4, the data is analyzed. FIG. 5 is a flow chart (500)illustrating a process of analyzing the read and write operationmeasurement data. As may be understood, the data in its raw form is atime measurement for completion of a transaction without actuallycompleting the transaction. This time measurement is used as a basis forcomparison with other product and configurations of hardware. At leastone time measurement is acquired, as shown in FIGS. 2 and 3, and thismeasurement is compared with a second measurement of a comparableprocess (502). In one embodiment, the comparison may be with competitordata. Similarly, in one embodiment, the comparison may be with analternative hardware configuration. In one aspect, it is desirable forthe measured time interval to be short without jeopardizing performance.A short time measurement provides a faster time for processing the readand/or write operation.

As such, following the comparison at step (502), it is determined if themeasured time interval is shorter than the comparison time interval(504). A positive response to the determination at step (504) is anindication that the hardware supporting the modified storage device withthe embedded logic has a faster hardware configuration than the hardwareconfiguration supporting the comparison data (506). Conversely, anegative response to the determination at step (504) is an indicationthat the hardware supporting the modified storage device with theembedded logic has a greater response time than the hardwareconfiguration supporting the comparison data (508). In one embodiment,the comparison at step (502) may be reversed. However, regardless of theactual comparison test, the comparison ascertains which hardwareconfiguration has a greater latency. Accordingly, the measured timeintervals and evaluation of the interval data provides performance datawith respect to delayed data processing.

The evaluation of read and write operations are not limited tomeasurement of time and associated latency. The modified disk drive maybe employed to evaluate different metrics within the hardwareconfiguration. FIG. 6 is a flow chart (600) illustrating a process formeasuring bandwidth, and more specifically capacity of the hardware tosupport parallel operations. A plurality of modified disk drives isconnected in parallel to a disk controller (602). The quantity ofconnected modified disk drives is set to the variable N_(Total) (604). Aread operation is submitted to each of the modified disk drives in asingle communication, with the communication indicating that therequests should run in parallel (606). Before transmission of the readoperation, a diagnostic application records the start of the readoperation (608). There are different tools employed for tracking a timeinterval, including but not limited to, starting a time, reading aclock, etc. Recording the start of the read operation includes the startof tracking the time interval. Following step (608), the read operationsare transmitted to all of the modified disk drives represented by thevariable N_(Total) (610). Each of the individual modified disk drivesprocess the operation in parallel (612) and individually returns a NULLdata set to the diagnostic application as a reply to the read operation(614). Following receipt of the NULL data set, the diagnosticapplication records the end of the read operation (616). Accordingly,the time for processing parallel read operation is ascertained inconjunction with the quantity of modified storage devices incommunication with the controller.

Evaluation of bandwidth, as shown in FIG. 6, supports determining howmany requests can be processed in parallel, and more specifically, howmuch bandwidth an associated fibre channel can support. The measuredtime interval is a characteristic of bandwidth capacity. In oneembodiment, the measured time interval can be evaluated, per the processshown in FIG. 5. Based upon the evaluation, the quantity of modifiedhard drives can be increased or decreased to test for critical mass ofthe bandwidth. Although FIG. 6 demonstrates evaluation of bandwidth fora read operation, it may be similarly employed for evaluation ofparallel processing of a write operation based upon the premise of FIGS.3 and 6.

The modified disk drive employed in evaluation of read and writeoperations may emulate a disk drive that requires a spinning of the diskto support read and write operations. However, in one embodiment thelogic of the modified disk drive may be configured to emulate a diskdrive that does not require spinning of a disk, such as flash memory. Byconfiguring the logic of the modified hard drive, the data gathered andevaluated is indicative of performance of hardware that communicateswith storage media to support read and write operations. Hardwarecomponents include, but are not limited to, an adapter, a fibre channel,a disk controller, etc. Similarly, the data gathered and evaluated maybe indicative of performance of software to support the read and writeoperation. In one embodiment, such software may include, but is notlimited to, device drivers. Accordingly, measurement and evaluation oftime for read and write operations may be applied to determine causesfor delay, wherein the causes may be based upon software and/or hardwareelements that support the read and write operation.

Diagnostic testing of hardware components, including performance andbandwidth testing, may take place directly between a client machine or aserver and designated data storage device, or between a client machineor a server and a disk controller in communication with at least twostorage devices. FIG. 7 is a block diagram (700) illustrating toolsembedded in a computer system to support diagnostic testing of hardware,and more specifically for accessing performance with respect to responseevaluation and/or bandwidth. For illustrating purposes, a computersystem is provided with a client machine (710) in communication withdata storage (730). Although the computer system illustrated a clientmachine (710), in one embodiment, the client machine may be replacedwith a server or a personal computer. The client machine (710) isprovided with hardware to support performance evaluation. As shown,client machine (710) is provided with a processing unit (712) incommunication with memory (716) across a bus (714). In addition, clientmachine (710) is in communication with local data storage (730).

The data storage (730) is in direct communication with the clientmachine (710). More specifically, a slot is provided within the computerhardware of the client machine (710) to support the direct connectionwithout use of a secondary connection element, such as a cable. The datastorage (730) is replaced with a modified storage device (740). In oneembodiment, data storage (730) is removed from the designated slotwithin the client machine (710) and replaced with the modified storagedevice (740). More specifically, the modified storage device isconfigured with a substrate (742) and logic (744) embedded within thesubstrate, wherein the logic (744) includes instructions to supporthardware performance evaluation. The logic (740) emulates behavior of aconventional data storage device, so that the client machine views themodified storage device (740) as a conventional storage device.

A functional unit (750) is provided in communication with memory (716)to support issuance of a diagnostic request to the modified storagedevice (740) and evaluation of a reply communication received from themodified storage device (740). As shown, the functional unit (750) isprovided with a diagnostic program (752), a request manager (754), atest manager (756), and an evaluation manager (758). The diagnosticprogram (752) supports issuance of a request for evaluation of themodified storage device (740). The request manager (754) communicateswith the diagnostic program (752) and is responsible for sending arequest from the diagnostic program (752) to the modified storage device(740). More specifically, the request manager (754) accesses andreceives a response communication from the modified storage device(740); the modified storage device (740) supports the request withoutprocessing data. As noted above, the modified storage device (740) isnot an actual storage device and is modified with logic to emulate astorage device. Accordingly, the modified storage device (740) isconfigured in communication with the request manager to receivecommunications and to reply to the communications without actuallyreading or writing data from an embedded data storage medium.

As shown, the functional unit (750) is configured with a test manager(756) in communication with the request manager (754). The test manager(756) is responsible for testing performance of supporting hardware incommunication with the modified storage device (740). More specifically,the test manager (756) measures a factor in the form of a characteristicof both issuance of the request and receipt of a response communicationby the request manager (754). The request manager (754) may issue arequest to read data from data storage or to write data to data storage.As the modified storage device (740) does not actually include datastorage, it cannot support either category of transactions. The embeddedlogic (744) emulates a conventional data storage device to support bothcategories of transactions, and to issue a reply communication to eithertransaction indicating receipt thereof.

An evaluation manager (758) is provided in communication with the testmanager (756). The evaluation manager (758) is employed to evaluateperformance of the modified storage device (740). In one embodiment,performance may be in the form of speed and/or bandwidth. With respectto speed, the evaluation manager (758) calculates the speed at which themodified storage device (740) processed a read or write request. Asdifferent computer systems may have different configurations forhardware support of data storage, the evaluation manager (758) evaluatesthe speed of processing the request, and not the speed at which aconventional hard drive may need to spin-up to service the request.Because the modified storage device (740) does not actually service therequest, the evaluation manager (758) receives raw data pertaining tothe speed at which a request may be processed based upon the physicalhardware elements and connections between the functional unit (750) andthe modified storage device (740). In one embodiment, the evaluationmanager (758) evaluates the time interval from a send of the request toreceipt of a response. Similarly, in one embodiment, the request manager(754) may send at least two requests to the modified storage device(740) in parallel, so that the evaluation manager (758) may measure thebandwidth of a channel supporting parallel process of multiple requests.

As identified above, the diagnostic program (752), request manager(754), test manager (756), and evaluation manager (758) function aselements to support the diagnostic evaluation of hardware performanceand/or capacity. The diagnostic program (752) and managers (754)-(758)are shown residing in memory (716) local to the client machine (710).However, the diagnostic program (752) and managers (754)-(758) mayreside as hardware tools external to memory (716), or they may beimplemented as a combination of hardware and software. Similarly, in oneembodiment, the diagnostic program (752) and managers (754)-(758) may becombined into a single functional item that incorporates thefunctionality of the separate items. As shown herein, each of thediagnostic program (752) and managers (754)-(758) are shown local to theclient machine (710). However, in one embodiment they may becollectively or individually distributed across a network or multiplemachines and function as a unit to evaluate hardware performance.Accordingly, the managers and director may be implemented as softwaretools, hardware tools, or a combination of software and hardware tools.

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present invention may take the formof an entirely hardware based embodiment, an entirely software basedembodiment (including firmware, resident software, micro-code, etc.) oran embodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system.”Furthermore, aspects of the present invention may take the form of acomputer program product embodied in one or more computer readablemedium(s) having computer readable program code embodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer readablestorage medium would include the following: an electrical connectionhaving one or more wires, a portable computer diskette, a hard disk, arandom access memory (RAM), a read-only memory (ROM), an erasableprogrammable read-only memory (EPROM or Flash memory), an optical fiber,a portable compact disc read-only memory (CD-ROM), an optical storagedevice, a magnetic storage device, or any suitable combination of theforegoing. In the context of this document, a computer readable storagemedium may be any tangible medium that can contain, or store a programfor use by or in connection with an instruction execution system,apparatus, or device.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer readable medium thatis not a computer readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wire line, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for aspects of thepresent invention may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java, Smalltalk, C++ or the like and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages. The program code may execute entirely on theuser's computer, partly on the user's computer, as a stand-alonesoftware package, partly on the user's computer and partly on a remotecomputer or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider).

Aspects of the present invention are described above with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

Referring now to the block diagram of FIG. 8, additional details are nowdescribed with respect to implementing an embodiment of the presentinvention. The computer system includes one or more processors, such asa processor (802). The processor (802) is connected to a communicationinfrastructure (804) (e.g., a communications bus, cross-over bar, ornetwork).

The computer system can include a display interface (806) that forwardsgraphics, text, and other data from the communication infrastructure(804) (or from a frame buffer not shown) for display on a display unit(808). The computer system also includes a main memory (810), preferablyrandom access memory (RAM), and may also include a secondary memory(812). The secondary memory (812) may include, for example, a hard diskdrive (814) and/or a removable storage drive (816), representing, forexample, a floppy disk drive, a magnetic tape drive, or an optical diskdrive. The removable storage drive (816) reads from and/or writes to aremovable storage unit (818) in a manner well known to those havingordinary skill in the art. Removable storage unit (818) represents, forexample, a floppy disk, a compact disc, a magnetic tape, or an opticaldisk, etc., which is read by and written to by removable storage drive(816). As will be appreciated, the removable storage unit (818) includesa computer readable medium having stored therein computer softwareand/or data.

In alternative embodiments, the secondary memory (812) may include othersimilar means for allowing computer programs or other instructions to beloaded into the computer system. Such means may include, for example, aremovable storage unit (820) and an interface (822). Examples of suchmeans may include a program package and package interface (such as thatfound in video game devices), a removable memory chip (such as an EPROM,or PROM) and associated socket, and other removable storage units (820)and interfaces (822) which allow software and data to be transferredfrom the removable storage unit (820) to the computer system.

The computer system may also include a communications interface (824).Communications interface (824) allows software and data to betransferred between the computer system and external devices. Examplesof communications interface (824) may include a modem, a networkinterface (such as an Ethernet card), a communications port, or a PCMCIAslot and card, etc. Software and data transferred via communicationsinterface (824) are in the form of signals which may be, for example,electronic, electromagnetic, optical, or other signals capable of beingreceived by communications interface (824). These signals are providedto communications interface (824) via a communications path (i.e.,channel) (826). This communications path (826) carries signals and maybe implemented using wire or cable, fiber optics, a phone line, acellular phone link, a radio frequency (RF) link, and/or othercommunication channels.

In this document, the terms “computer program medium,” “computer usablemedium,” and “computer readable medium” are used to generally refer tomedia such as main memory (810) and secondary memory (812), removablestorage drive (816), and a hard disk installed in hard disk drive (814).

Computer programs (also called computer control logic) are stored inmain memory (810) and/or secondary memory (812). Computer programs mayalso be received via a communication interface (824). Such computerprograms, when run, enable the computer system to perform the featuresof the present invention as discussed herein. In particular, thecomputer programs, when run, enable the processor (802) to perform thefeatures of the computer system. Accordingly, such computer programsrepresent controllers of the computer system.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the invention. Asused herein, the singular forms “a”, “an” and “the” are intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. It will be further understood that the terms “comprises”and/or “comprising,” when used in this specification, specify thepresence of stated features, integers, steps, operations, elements,and/or components, but do not preclude the presence or addition of oneor more other features, integers, steps, operations, elements,components, and/or groups thereof.

The corresponding structures, materials, acts, and equivalents of allmeans or step plus function elements in the claims below are intended toinclude any structure, material, or act for performing the function incombination with other claimed elements as specifically claimed. Thedescription of the present invention has been presented for purposes ofillustration and description, but is not intended to be exhaustive orlimited to the invention in the form disclosed.

Many modifications and variations will be apparent to those of ordinaryskill in the art without departing from the scope and spirit of theinvention. The embodiment was chosen and described in order to bestexplain the principles of the invention and the practical application,and to enable others of ordinary skill in the art to understand theinvention for various embodiments with various modifications as aresuited to the particular use contemplated.

Alternative Embodiment

It will be appreciated that, although specific embodiments of theinvention have been described herein for purposes of illustration,various modifications may be made without departing from the spirit andscope of the invention. In particular, the system can be configured witha modified auxiliary device with a secondary connection to the clientmachine. The diagnostic, together with the managers, may be employed toevaluate the performance and bandwidth of the modified auxiliary devicetogether with the second connection. In one embodiment, the auxiliarydevice may be a flash drive in communication with the client machinethrough a universal service bus. Similarly, in one embodiment, thesecondary connection may be a cable, an adapter, a fiber channel, etc.,with the evaluation indicating if there are performance concerns of thehardware with respect to the secondary connection. Accordingly, thescope of protection of this invention is limited only by the followingclaims and their equivalents.

We claim:
 1. A method comprising: configuring a computer system with aport connection to directly receive a persistent storage device; theport connection receiving a modified storage device, the modified devicehaving logic to emulate behavior of the persistent device; emulatingbehavior of the persistent device, including sending a request from anapplication to the modified device, the request to access the modifieddevice, including the modified device to issue a response to the requestwith a reply after emulating a transaction, the response including ameasurement of time for completion of the transaction at the modifieddevice, wherein emulating the behavior further consists of returning anull data set for responding to a read transaction; and testingperformance of supporting hardware in communication with the modifieddevice, including measuring a factor associated with sending of therequest to receipt of the response, the measuring including testingcapacity of an intermediate component that supports physicalcommunication of the request to the modified device.
 2. The method ofclaim 1, further comprising sending the request to at least two or moremodified devices in a single communication, and measuring the factorassociated with sending of the request to receipt of the response. 3.The method of claim 2, wherein the factor is a measurement of bandwidthof a channel supporting the request.
 4. The method of claim 1, whereinthe modified storage device replaces the persistent storage device. 5.The method of claim 1, further comprising running a diagnosticmeasurement associated with speed and time for processing the request.6. A system comprising: a processing unit in communication with memoryand an operating system; a computer system with a port connection todirectly receive a persistent storage device; the port connectionreceiving a modified storage device, the modified device having logic toemulate behavior of the persistent device; a functional unit incommunication with the memory, the functional unit comprising: adiagnostic program to support issuance of an evaluation to the modifieddevice; a request manager in communication with the diagnostic program,the modified device to emulate behavior of the persistent storage,including the request manager to send a request from the diagnosticprogram to the modified device, the request manager to access themodified device, including the modified device to issue a response tothe request with a reply after emulation of a transaction, the responseincluding a measurement of time for completion of the transaction at themodified device, wherein emulating the behavior of the persistent deviceconsists of returning a null data set for responding to a readtransaction; and a test manager in communication with the requestmanager, the test manager to test performance of supporting hardware incommunication with the modified device, including measurement of afactor associated with both the sending of the request by the requestmanager and the receipt of the response, the measurement including totest capacity of an intermediate component that supports physicalcommunication of the request to the modified device.
 7. The system ofclaim 6, wherein the request includes an operation selected from thegroup consisting of: a read operation and a write operation.
 8. Thesystem of claim 6, further comprising the request manager to send therequest to at least two or more modified devices in a singlecommunication, and to measure the factor associated with sending of therequests to receipt of the response.
 9. The system of claim 8, whereinthe factor is a measurement of bandwidth of a channel supporting therequest.
 10. The system of claim 6, wherein the modified storage devicereplaces the persistent storage device.
 11. A computer program productfor use with an electronic communication, the computer program productcomprising a computer-readable storage device having computer readableprogram code, which when executed on a processor causes a computer toimplement a method for testing performance of computer hardware, themethod comprising: configuring a computer system with a port connectionto directly receive a persistent storage device; the port connectionreceiving a modified storage device, the modified device having logic toemulate behavior of the persistent device; emulating behavior of thepersistent device, including sending a request from an application tothe modified device, the request to access the modified device,including the modified device to issue a response to the request with areply after emulating a transaction, the response including ameasurement of time for completion of the transaction at the modifieddevice, wherein emulating the behavior consists of returning a null dataset for responding to a read transaction; and testing performance ofsupporting hardware in communication with the modified device, includingmeasuring a factor associated with sending of the request to receipt ofthe response, the measuring including testing capacity of anintermediate component that supports physical communication of therequest to the modified device.
 12. The computer program product ofclaim 11, further comprising sending the request to at least two or moremodified devices in a single communication, and measuring the factorassociated with sending of the requests to receipt of the response. 13.The computer program product of claim 11, wherein the modified storagedevice replaces the persistent storage device.
 14. A computerimplemented method for evaluation of hardware components, the methodcomprising: a computer system configured with a port connection todirectly receive a persistent storage device; the port connection toreceive a modified storage device, the modified device configured withlogic for emulating behavior of the persistent device, and; the modifieddevice emulating behavior of the persistent device, including anapplication sending a request to the modified device, the requestaccessing the modified device; a diagnostic tool receiving a responsecommunication from the modified device, wherein the responsecommunication includes data acknowledging receipt of the request foremulating a transaction, and a time measurement for completion of theemulation at the modified device, wherein emulating the behaviorconsists of returning a null data set for responding to a readtransaction; and testing performance of supporting hardware incommunication with the modified device, including measuring a factorassociated with sending of the request and receipt of the responsecommunication, the measuring including testing capacity of anintermediate component that supports physical communication of therequest to the modified device.
 15. The method of claim 14, wherein themodified storage device replaces the persistent storage device.